op {
  graph_op_name: "Conv"
  in_arg {
    name: "input"
    description: <<END
Tensor of type T and shape `batch_shape + spatial_shape + [in_channels]` in the
case that `channels_last_format = true` or shape
`batch_shape + [in_channels] + spatial_shape` if `channels_last_format = false`.
spatial_shape is N-dimensional with `N=2` or `N=3`.
Also note that `batch_shape` is dictated by the parameter `batch_dims`
and defaults to 1.
END
  }
  in_arg {
    name: "filter"
    description: <<END
An `(N+2)-D` Tensor with the same type as `input` and shape
`spatial_filter_shape + [in_channels, out_channels]`, where spatial_filter_shape
is N-dimensional with `N=2` or `N=3`.

END
  }
  out_arg {
    name: "output"
    description: <<END
A (N+1+batch_dims)-D tensor. The dimension order is determined by the value of
`channels_last_format`, see below for details.
END
  }
  attr {
    name: "strides"
    description: <<END
1-D tensor of length `N+2`. The stride of the sliding window for each
dimension of `input`. Must have `strides[0] = strides[N+1] = 1`.
END
  }
  attr {
    name: "padding"
    description: <<END
The type of padding algorithm to use.
END
  }
  attr {
    name: "explicit_paddings"
    description: <<END
If `padding` is `"EXPLICIT"`, the list of explicit padding amounts. For the ith
dimension, the amount of padding inserted before and after the dimension is
`explicit_paddings[2 * i]` and `explicit_paddings[2 * i + 1]`, respectively. If
`padding` is not `"EXPLICIT"`, `explicit_paddings` must be empty.
END
  }
  attr {
    name: "data_format"
    description: <<END
Used to set the data format. By default `CHANNELS_FIRST`, uses 
`NHWC (2D) / NDHWC (3D)` or if `CHANNELS_LAST`, uses `NCHW (2D) / NCDHW (3D)`.
END
  }
  attr {
    name: "dilations"
    description: <<END
1-D tensor of length `N+2`. The dilation factor for each dimension of
`input`. If set to `k > 1`, there will be `k-1` skipped cells between each
filter element on that dimension. The dimension order is determined by the
value of `channels_last_format`, see above for details. Dilations in the batch
and depth dimensions must be 1.
END
  }
  attr {
    name: "batch_dims"
    description: <<END
A positive integer specifying the number of batch dimensions for the input
tensor. Should be less than the rank of the input tensor.
END
  }
  attr {
    name: "groups"
    description: <<END
A positive integer specifying the number of groups in which the input is split
along the channel axis. Each group is convolved separately with
`filters / groups` filters. The output is the concatenation of all the groups
results along the channel axis. Input channels and filters must both be
divisible by groups.
END
  }
  summary: "Computes a N-D convolution given (N+1+batch_dims)-D `input` and (N+2)-D `filter` tensors."
  description: <<END
General function for computing a N-D convolution. It is required that
`1 <= N <= 3`.
END
}
